#include <vector>
using namespace std;

class Solution
{
public:
    // 思路：双指针法，从两端向中间移动，计算每次的面积并更新最大值
    //   怎么移动指针呢？移动较短的一边，因为面积受限于较短的一边，移动较短的一边有可能遇到更高的边，从而增大面积
    int maxArea(vector<int> &height)
    {
        int left = 0;
        int right = height.size() - 1;
        int max_area = 0;
        while (left < right)
        {
            int width = right - left;
            int area = width * min(height[left], height[right]);
            max_area = max(max_area, area);
            if (height[left] > height[right])
            {
                --right;
            }
            else
            {
                ++left;
            }
        }
        return max_area;
    }
};